Vehicle measuring system

ABSTRACT

An improved laser scanning apparatus ( 46 ) for determining frame or unibody alignment or misalignment of a vehicle ( 40 ) is provided, which includes a laser assembly ( 54 ), a pair of rotatable mirror assemblies ( 56,58 ) and laser detectors ( 114,116 ) located within an enclosed housing ( 50,52 ). The laser assembly ( 54 ) has an upper pair of lasers ( 122,126 ) located in known, spaced relationship above a lower pair of lasers ( 124,128 ), with the detectors ( 114, 116 ) disposed between the upper and lower laser pairs ( 122, 126, 124, 128 ). The apparatus ( 46 ) is used in conjunction with a plurality of individually coded reflective targets ( 44 ) which are suspended from known reference points on the vehicle ( 40 ). In use, the laser assembly ( 54 ) in conjunction with the mirror assemblies ( 56,58 ) directs upper and lower laser beams through 360 degree scans to impinge on the targets ( 44 ); laser radiation reflected from the targets ( 44 ) is detected by the detectors ( 114, 116 ), allowing trigonometric calculation of target positions using information derived from the scans of the upper and lower beams. In this way, a determination can be made if any of the targets ( 44 ) are out of plumb (i.e., not truly vertical). Preferably, the housing ( 50,52 ) includes a pair of elongated, laser-transparent panels ( 88, 90 ) and is effectively sealed to minimize contamination of the apparatus ( 46 ).

SOURCE CODE APPENDIX

A source code appendix containing source code of two computer programs used in the present invention is appended hereto and includes two identical sets of CDROMs, each set consisting of two CDROMs. Each CDROM set contains an ASCII file and an executable file for a calibration program and a user program.

A CDROM Table identifying the names of the files, the dates of creation of the files, and the sizes of the files for each CDROM of each set of CDROMs is attached at the end of the specification. These tables are entitled CDROM Table in ASCII Format and CDROM Table in Executable Format, respectively. The source code appendix also includes 6 sheets of microfiche containing a total of 380 frames of the user program. The entire source code appendix is incorporated into the specification of the present application by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention is broadly concerned with apparatus for determining deformation in vehicle bodies and the like, using a laser scanning apparatus in conjunction with a plurality of coded targets suspended from (or in known relationship to) known reference points on the vehicle to calculate three dimensional spatial coordinates defining the actual positions of the targets, and to compare such calculated positions with manufacturer-provided specification values. More particularly, the invention is concerned with such apparatus and corresponding methods wherein use is made of a plurality of vertically spaced apart scanning laser beams, permitting determination of whether individual ones of the coded targets are in plumb relative to the vehicle, and the extent of target inclination; in this way, more accurate vehicle body measurements are obtained. In addition, the preferred scanning apparatus has a stationary central laser assembly, a pair of upright, rotatable mirrors, associated laser detectors and on-board scanner electronics all located within an enclosed housing, thereby minimizing ambient contamination of the scanning apparatus through accumulation of dust or the like within the scanning apparatus.

2. Description of the Prior Art

In the past, vehicles such as automobiles have structural frames on which body panels and the like were built. Repair of accidental vehicle damage often involved straightening the frame and reshaping or replacing body panels. In order to meet government-imposed fuel consumption standards, unibody construction was adopted for many vehicles. In a unibody vehicle, no distinct frame exists apart from the body panels; instead, like an egg carton, the panels together form a “unibody”, with consequence substantial weight savings.

With either form of vehicle, frame or unibody, repair is greatly speeded with improved quality, by use of a frame (and unibody) straightening machine such as described in U.S. Pat. No. RE 31,636. While such straightening machines are highly effective, such machines do not by themselves provide information as to the extent of straightening to be accomplished. Vehicles currently have manufacturer-provided reference points, such as reference openings or holes located at established points on the vehicles. Manufacturers also provide specifications for the correct three-dimensional spatial locations of these reference points relative to each other. Thus, if a vehicle is damaged, these reference points may be moved from their normal or “specification” positions with respect to each other. Most, if not all, vehicle frame and unibody straightening jobs require return of the vehicle reference points to within manufacturer specifications.

U.S. Pat. No. 5,801,834 describes a significant advance in the vehicle straightening art, and apparatus in accordance therewith has been commercialized by Chief Automotive Systems of Grand Island, NE. Specifically, this patent discloses a laser generating unit located beneath a vehicle and in an orientation for sweeping laser beams across the reflective surfaces of coded targets suspended from or in known relationship to the vehicle reference points. Preferably, a laser beam is split into two beams using a 50/50 beam splitter, with each beam then being directed to a rotating mirror. The rotating mirrors direct the laser beams in a 360° circle, with both beams being directed in a single plane. Each laser beam is reflected back to its source when it strikes the reflective stripes of the coded targets. These reflected beams are registered as “on” events (or counts) by the electronics on board the laser measuring device. A counter counts the number of counts (as measured by an oscillator) from zero to the edge of each reflective/non-reflective border on the targets. An associated microprocessor receives the count information for each target and computes the angle from the center of each mirror to the center of each target. With the two angle measurements (one for each mirror and target) and the known baseline between the two mirrors, the planar (X, Y) coordinates of each reference hole are computed using trigonometry. The third coordinate (Z) is calculated using Z-coordinate representative sizing of the reflective and non-reflective strips on the coded targets. The actual three-dimensional spatial coordinates of each reference hole relative to a calculated point and plane are determined and displayed by the computer, along with the deviation from the normal or specification value provided by the vehicle manufacturer's data. With this information, the operator may then straighten the frame or unibody, with successive measurements being taken to monitor the progress of the straightening operation and determination of when the frame or unibody is properly straightened.

It Willie appreciated that the system described in the '834 patent assumes that all of the vehicle targets will be essentially in plumb. However, in practice this is not always the case. For example, targets may not assume a plumb orientation owing to interference between the targets and vehicle components, particularly with damaged vehicles. Furthermore, many straightening shops are operated in open air so that the cantilever-suspended targets are subject to wind-induced oscillations. Whatever the cause, non-plumb targets detract from the desirable degree of accuracy which can be obtained using scanning laser devices of the type described in the '834 patent.

SUMMARY OF THE INVENTION

The present invention overcomes the problems outlined above, and provides an improved laser scanning system, and corresponding methods, for determining frame or unibody alignment of a vehicle. The system includes a scanning apparatus together with at least one reflective laser beam target adapted for placement in a known relationship relative to a selected reference point on a vehicle to be scanned. The scanning apparatus includes a laser assembly operable to direct laser beams toward the vehicle target, and a detector for receiving reflected laser beams from the target. In the invention the laser assembly is operable to direct a pair of individual laser beams spaced vertically from each other by a known distance toward the target, and to detect the reflected beams from the target. In this way, using a microprocessor operably coupled with the scanning apparatus, it is possible to calculate individual, upper and lower, three-dimensional spatial coordinates of the target using the respective vertically spaced apart laser beams. This in turn permits determination of whether the target is truly in plumb (i.e., vertical), and the extent of deviation from plumb for the target.

In preferred forms, the laser assembly includes a pair of laser units, with each laser unit including a pair of vertically spaced apart lasers. The laser assembly is preferably stationary, with the overall apparatus including a pair of rotating mirror assemblies respectively located on opposite sides of the laser assembly. Each such mirror assembly comprises an upright mirror having a relatively wide reflective surface and a relatively narrow reflective edge; this permits discrimination between reflections from the wide mirror surfaces versus the narrow reflected edge surfaces.

In practice, a plurality of reflected targets form a part of the system, and are suspended from individual reference points on the vehicle. Each of the targets is individually coded so that the scanning apparatus can discriminate between the targets. Preferably, each target has vertical endmost reflective stripes or “strikes”, together with a pair of obliquely oriented reflective stripes between the endmost stripes.

Preferably, the components of the scanning apparatus, and particularly the laser assembly, mirror assemblies, detectors and on-board electronics are housed within an enclosed housing. This assures that the scanning apparatus can be used in a shop environment with a minimum of contamination from ambient dust or the like.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a side elevational view of a vehicle having coded reflective targets suspended from predetermined locations on the vehicle, and with the scanning apparatus of the invention disposed below the vehicle and in an orientation for scanning of the depending targets;

FIG. 2 is a front elevational view of the scanning apparatus;

FIG. 3 is a sectional view taken along line 3—3 of FIG. 2 and depicting further details of the internal construction of the scanning apparatus;

FIG. 4 is a vertical sectional view of the scanning apparatus;

FIG. 5 is a bottom view of the scanning apparatus, with the bottom cover plate removed;

FIG. 6 is a vertical sectional view taken along line 6—6 of FIG. 2 and depicting components of the laser assembly;

FIG. 7 is a vertical sectional view taken along line 7—7 of FIG. 2 and illustrating in detail the construction of the mirror assemblies of the scanning apparatus;

FIG. 8 is an end elevational view of the scanning apparatus, showing the on-off switch and computer connection for the scanning apparatus;

FIG. 9 is an enlarged, fragmentary view with parts broken away and depicting the laser assembly;

FIG. 10 is a side elevational view of the laser assembly;

FIG. 11 is a side elevational view with parts broken away of a target in accordance with the invention;

FIG. 12 is a side elevational view of another target;

FIG. 13 is a sectional view taken along line 13—13 of FIG. 11;

FIG. 14 is a computer software flow diagram of the user program used to control the operation of the scanning apparatus in the field;

FIG. 15 is a computer software flow diagram illustrating the vehicle measurement steps carried out during use of the scanning apparatus;

FIG. 16 is a computer software flow diagram illustrating the base reference steps carried out during use of the scanning apparatus;

FIG. 17 is a computer software flow diagram illustrating the scanner read steps carried out during use of the scanning apparatus;

FIG. 18 is a computer software flow diagram illustrating the target decoding steps carried out during use of the scanning apparatus; and

FIG. 19 is a computer software flow diagram illustrating the target processing steps carried out during use of the scanning apparatus.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Turning now to the drawings, and particularly FIG. 1, a vehicle 40 is illustrated on a lift device 42. The vehicle 40 has a plurality of individually coded targets broadly referred to by the numeral 44 suspended from specific locations around the vehicle. A factory precalibrated scanning apparatus 46 in accordance with the invention is located beneath the vehicle 40 and in an orientation for laser scanning of the suspended targets 44. As shown, the apparatus 46 is operatively coupled with a computer 48, typically in the form of a PC.

The scanner 46 is illustrated in FIGS. 2-10 and broadly includes a lower housing 50, an upper housing 52, a laser assembly 54, a pair of end-mounted mirror assemblies 56 and 58, a main control board 60 and respective mirror assembly control boards 62 and 64 (see FIG. 5).

The lower housing 50 is in the form of a metallic boxlike element presenting a front wall 66, opposed rear wall 68, end walls 69 and 69 a, top panel 70 and removable bottom plate 72. An elongated component compartment 74 is thus defined between front and rear walls 66, 68 and panel 70 and bottom plate 72. It will be observed (FIG. 8) that the end wall 69 a is equipped with an on-off switch 76 as well as a pin-type connector 78 allowing coupling computer 48 to the apparatus 46. Bottom plate 72 is secured to the lower housing 50 by means of connector struts 79.

Upper housing 52 includes a top wall 80 with oblique, depending end walls 82 and 84. The upper housing 52 is secured to the lower housing 50 by means of end connectors 86 (FIG. 5). The overall upper housing 52 also includes a pair of upstanding, opposed transparent glass window panels 88, 90 which extend substantially the full length of the upper housing between end walls 82, 84. Referring to FIGS. 6 and 7, it will be seen that the panels 88, 90 are housed within elongated grooves 92, 94 provided along the length of top panel 70, as well as within grooves 96, 98 provided along the underside of top wall 80.

The laser assembly 54 is located within upper housing 52, and rests atop panel 70 of lower housing 50. The laser assembly 54 includes an upright housing cover 100 with a pair of oppositely directed, vertical dual laser units 102 and 104 therein. Each of the units 102, 104 has an upright circuit board 106, 108 equipped with electrical connectors 110, 112 and a central laser detector 114, 116. Additionally, the units 102, 104 have an upright mounting block 118, 120 which are secured by fasteners (not shown) to top panel 70. The blocks 118, 120 support a pair of vertically spaced apart laser diodes 122, 124 (support 118) and 126, 128 (support 120). The upper lasers 122, 126 are vertically spaced above the lower lasers 124, 128 by a known distance (e.g., 31 mm); the upper lasers emit radiation in a common upper plane, while the lower lasers emit radiation in a common lower plane, where the planes are vertically spaced apart the same known distance. The respective supports also have outboard focusing lenses 130, 132 and inboard transparent panels 134, 136. The lens 130 and panel 134 are located in covering relationship to the detector 114; similarly, the lens 132 and panel 136 cover detector 116. The preferred laser diodes emit 250 nm visible laser radiation.

The mirror assemblies 56, 58 are mounted within and adjacent the ends of the upper housing 52. These assemblies are identical and therefore only assembly 56 will be described in detail. Referring to FIGS. 4, 5 and 7, it will be seen that the assembly 56 includes a rotatable hub 138 supporting an upstanding, planar, front reflective-surfaced mirror 140; the mirror 140 is silvered on one broad face 142 thereof, as well as along one narrow, waist-cut beveled edge 144. This beveled edge produces a secondary narrow mirror used to generate accurate synchronization signals. The edge is formed by grinding a precise waist cut radius and coating the edge so that edge-reflected laser beams are caused to strike back at the midpoint between the upper and lower lasers, namely at the detectors 114, 116. The radius cut is also at a bevel angle that permits the full thickness of the mirror to be centered on the laser beam at the precise angle which will reflect the beam toward the associated detector.

As shown, the hub 138 is mounted within an opening 146 provided in top panel 70 of lower housing 50. The hub 138, and thus mirror 140, are rotated by means of a brushless electric motor 148 and a drive shaft 150 coupled to hub 138. The hub motor 148 is mounted on a three-point suspension to allow the mirror 140 to be adjusted mechanically to spin at a true vertical axis parallel to the other mirror. While these adjustments can be made mechanically, it can be difficult to obtain an exact alignment. Further, the internal rotating parts of the apparatus 46 are protected by the glass panels 88, 90 which may distort the rotational velocity of each hemisphere of scan due to the dissimilar index of refraction between the glass and air. A mathematical correction algorithm is applied by the post-computer 48 to correct all data for these potential aberrations.

The rotational velocity of each motor 148 is controlled to produce a torque-ripple of less than 10 ppm of rotation speed. The motor 148 and control board 62 (Part No. RMOTN2028GEZZ from Sharp Electronics) are supported beneath top panel 70 by means of a mounting block 149 and three connector bolts 152 extending downwardly from panel 70. Each of the bolts 152 carries a compression spring 154.

The main control board 60 is situated below laser assembly 54 and is secured to the underside of top panel 70. An electrical connector 156 extends upwardly from board 60 through an opening 158 in panel 70, for electrical connection with connectors 110, 112 associated with the laser units 102, 104. The main control board includes appropriate electronics for software control of the laser assembly 54.

Each of the mirror control boards 62, 64 includes Hall-effect sensor 160, 162 as well as other conventional electronics including a magnetically encoded tachometer ring used in the control of the respective mirror assemblies 56, 58. This provides a motor tachometer signal that is amplified to produce a square wave signal. This signal transitions high to low at one degree increments, providing 360 pulses per revolution of the motor. The speed control signal to the motor is generated by triggering a one-shot pulse of precise duration. The one-shot is implemented digitally, using the system clock running at 29 MHz by dividing the clock down to generate a precise millisecond pulse. The pulse is used to switch a reference voltage into a low-pass filter. The output of the filter rises in voltage when the speed of the motor is too slow, and drop in voltage if the speed of the motor is too fast. In this way, the motor speed is controlled to a precise rpm. A feedback loop is used to stabilize the rotational speeds of the motors at respective, constant speeds. This produces hub rotational velocities which are constant. Although not shown, the main control board 60 and mirror control boards 62, 64 are electrically connected by appropriate cabeling.

FIGS. 11 and 13 depict a typical coded target 44, which includes an elongated reflective body 164 with opposed end caps 166, 168. The body 164 is somewhat trapezoidal in cross-section as best seen in FIG. 13, and has a reflective face 170. In the illustrated target, a total of four upright, elongated mirrored reflective stripes 172, 174, 176, 178 are provided (sometimes referred to as “strikes”), with non-reflective regions 179 therebetween. It will be observed that the reflective stripes 172 and 178 are vertically oriented at known slopes and are considered reference stripes. The intermediate stripes 174 and 176 (center strikes) are obliquely oriented so that the non-reflective distance between the intermediate stripes and the reference stripes varies throughout the height of the target. An upper hanger element 180 is secured to body 164 and permits suspension of the target from a selected automotive location. FIG. 12 illustrates a hanger 44 of a different length as compared with that illustrated in FIGS. 11 and 13. However, the FIG. 12 hanger likewise includes a body 164, end caps 166, 168, hanger element 180 and reflective surfaces 172-178. It will be appreciated that different targets 44 have different patterns of reflective surfaces thereon so that the scanner 46 may discriminate between individual coded targets, i.e., each target has a unique set of strike widths for the four strikes. Moreover, each target has an individual identification numbers associated therewith. The following criteria are used with the targets 44: minimum strike width, 2 mm; each strike width is at least 1½ mm wider than the next narrowest strike width; minimum non-reflective gap between strikes, 3 mm; the targets should be relatively narrow so as not to block the view of other targets; and the targets are configured for use with a single-line scanner to measure target heights over a range of ±75 mm.

As delivered from the factory, the apparatus 46 is precalibrated to account and compensate for inevitable manufacturing tolerance errors and the like, e.g., nonvericality of the mirrors 140 and actual rotational speeds of these mirrors. Such factory calibration is carried out using a calibration program explained below and fully set forth in the source code appendix. The calibration parameters (52 in number) are stored in the nonvolatile memory of the apparatus 46 and are recalled during the course of actual use of the scanner.

In use, the scanning apparatus 46 is positioned beneath the vehicle 40 in an orientation such that the radiation emitted by the laser assembly 54 will strike the reflective faces of the coded targets 44 suspended from vehicle reference points. As illustrated in FIG. 1, this is often accomplished by placement of the apparatus 46 beneath the center region of the vehicle on the lift device 42. The computer 48 is coupled with the apparatus 46 as shown.

During scanning operations, the mirrors 140 are rotated at determinable but slightly different (e.g., 1%) speed (e.g., 390 rpm) while the laser assembly 54 is operated. Specifically, the upper lasers 122, 126 are operated simultaneously and the lower lasers 124, 128 are also operated simultaneously. However, the upper and lower laser pairs are operated alternately owing to the fact that only a single detector 114 or 116 is used. During operation of the upper laser pair, a 360° scan is generated so that the reflective faces of each of the targets 44 is scanned. The radiation reflected from the targets 44 impinges upon the mirrors 140 and is reflected through the lenses 130, 132, which focuses the reflected radiation on the detectors 114, 116. It will be appreciated that each sweep of every target generate eight on-off (reflective/non-reflective) events; the first and last of those events—the leading or “on” edge of the first reflective reference stripe, and the trailing “off” of the last reflective reference stripe—are of special significance in the determination of target position, as will be explained.

Furthermore, as the mirrors 140 rotate, light is reflected not only from the broad mirrored edges 144. The difference between broad face and edge radiation can be detected because of the intensity of light at the detector; the more intense light denotes edge-reflected radiation, whereas less intense light denotes broad face-reflected radiation. Hence, as the mirror rotation occurs, at some point for each target, the edge radiation will be detected; this is deemed the zero position. The next time edge radiation is detected, it is known that the mirror has traversed 360°. The time between the zero and 360 positions divided by 360 gives the travel time per degree of arc.

Inasmuch as the distance between the mirrors 140 is known, measurement of the angles between each respective target and the mirrors 140 allows calculation of upper X, Y coordinates for each of the targets. Such calculations involve simple triangulation trigonometry, as explained in U.S. Pat. No. 5,801,834 incorporated by reference herein. As the upper laser pair scans each target 44, the vertical position of the scan on the target is ascertained by determining the time between reflections from the reference stripe 172 and 178 and intermediate, oblique stripes 174 and 176. For example, and considering FIG. 11, a scan from left to right would generate different non-reflective times depending on the vertical location of the scan. With this information, and knowing the distance between the vertical position of the scan and the tip of hanger element 180, the upper Z coordinate for each target is calculated.

After the scan by the upper lasers 122, 126, the lower lasers 124, 128 are operated in the same manner, to achieve a 360° scan of the targets 44. Again, the lower lasers permit calculation of a lower X, Y and Z coordinate for each of the targets. Of course, if the distance between the upper and lower Z coordinates for a given target equals the distance between the upper and lower lasers, that target is deemed to be essentially in plumb.

In practice, the upper and lower X, Y and Z coordinates for each target are averaged and these average X, Y, Z coordinates are used for determining the extent of frame or vehicle straightening required. Also, a vector is generated between the upper and lower X, Y and Z coordinates for each target, and the divergence of this vector from vertical can be used to determine the angle of inclination of the target.

FIGS. 14-19 are flow diagrams illustrating the preferred scanner driver software (the user program) which is employed by the actual user of apparatus 46 in the field. The user program software is resident on the computer 48 coupled with the apparatus 46.

Turning first to FIG. 14, the main program flow is depicted. The user initiates the program at step 800, whereupon in step 802 the configuration for the system is loaded; this includes user preferences such as language and scanner type, and the calibration parameters derived from the factory calibration program and resident in the scanner's nonvolatile memory. Next, in step 804, the main screen is displayed which permits entry into all aspects of the program via a main menu. In step 806, the main form command loop is initiated which includes step 808. If no user input is detected, the program loops back to step 806. If such input is detected, the program proceeds to step 810 where a work order request query is carried out. If there is no work order request, the program proceeds to step 812 and seeks any other menu request. If there is no such menu request, the program proceeds to step 814 where a quit operation query is performed allowing the user to quit the program in step 816. If the answer in step 814 is NO, the program proceeds to step 818 where the command loop is terminated and the program loops back to step 806. Reverting back to step 812, if the answer is YES, the program processes the menu request in step 820 and proceeds to step 818.

Returning to step 810, the work order request query, if the answer is YES, the program executes a shop management server (SMS) program 822. A cancel query is made in step 824, so that if the answer is YES, the program reverts to step 804. If the answer is NO, in step 826, work order and vehicle information are requested from the shop management server. Once this step is completed, the program proceeds to step 828 where vehicle information is loaded. This comprises a specification file and graphic for the individual vehicle being measured. Next, in step 830, a recall query is performed. If the vehicle in question was previously measured, that information would be in computer memory. In such a case, the stored information is recalled via program 832, and the program then loops back to step 804. If the answer in step 830 is NO, the program proceeds to vehicle measurement program 834, which includes program A, FIG. 15.

Referring to FIG. 15, there are three measurement modes to be considered—initial, repair of final measurements. The program initiates with step 836, a scanner initialization, followed by a new order query in step 838. If the answer at step 838 is NO, the program proceeds to step 840 where the measurement session is restored and the program proceeds to step 842. If the answer at step 838 is YES, meaning that an initial measurement is desired, the base reference program 844 is initiated, FIG. 16 later to be described. After the base reference is established in program 844, the program goes to step 842 where an initial measurement query is made. If the answer is YES, the program proceeds to step 846 where an initial measuring setup is made. If the answer is NO, meaning that there was a previous measurement, the program proceeds to step 848 which is a final measurement query. If the answer is YES, in step 850, the system is set up for final measurement. If the answer is NO, the program proceeds to step 852 to set up the repair measurement mode for the vehicle, i.e., where the apparatus 46 is used during actual frame or vehicle straightening to monitor the course of the repair. In either case, from steps 850 or 852, the program in step 854 enters the measurement loop. This involves in step 856 a measurement requested query. If such a request has been made, the program proceeds to the target processing program 858, FIG. 19. If the answer at step 856 is NO, another menu request query is performed in step 860. If the answer at this step is YES, user input options are processed in step 862 and the program proceeds to the end measure loop 864. If the answer at step 860 is NO, the proceeds to step 866, a quit measuring query. If the answer at this step is YES, the program returns. If the answer is NO, it proceeds to loop 864.

The base reference program is illustrated in FIG. 16. It will be appreciated that initially the apparatus 46 determines the position of the targets 44 relative to the apparatus itself using an internal coordinate system. However, the targets are also located with reference to the manufacturer's specification, using a different coordinate system. In the base reference software routine, the two coordinate systems are brought together, usually using four targets located about the central region of the vehicle.

This involves, in step 868, an initial display of the targets seen by the scanning apparatus 46 using the internal coordinate system. Next, a loop 870 is entered where, in step 872, the user is allowed to match using manual inputs the targets seen by the scanner to corresponding vehicle manufacturer-provided specification points. Once this is accomplished, the programs proceeds to step 874 which is a cancel query. If the answer is YES, the program proceeds to return 876. If the answer is NO, a job done query is made at step 878. If the answer at this step is NO, the program proceeds to a menu option query at step 880. If no option is selected, end loop step 882 is entered, and the program reverts to step 870. If at step 880 the answer is YES, in step 884, the selected menu option is processed and the program proceeds to loop 882.

Returning to the done query at step 878, if the answer is YES, the program in step 886 fits the base targets to the manufacturer's specification points, and the program proceeds to the target processing program 858, FIG. 19. This involves, to the extent feasible, adjusting the two coordinate systems so that the origins thereof are coincident.

In the FIG. 19 target processing program, the first step is to read the scanner information via program 890, FIG. 17. After this is accomplished, a scanner reading query is made in step 892. This involves a determination as to whether the scanner readings are within predetermined limits designed to confirm the validity of the scanner readings. If the answer at step 892 is NO, the program proceeds to the return at step 894. If the answer at step 892 is YES, in step 896 there is a query to determine whether the base reference is valid. Again, this involves a determination of whether the base reference is within predetermined limits. If the answer at step 896 is NO, the program enters the reset base reference program 898, FIG. 16 described previously, and a new base reference is determined. If the answer is YES, the program proceeds to step 900 where the target positions ascertained by the scanner are transformed using the base reference. Next in step 902, the program “attaches” the valid targets and “detaches” moving or invalid targets. This involves comparing the transformed target data with the specification data. If these are not matched, the specification is searched for possible matches within 50 mm. If this cannot be done, the target is deemed detached. If a target was attached in the previous measurement, the new position is compared with the previous one. If the difference is 30 or more mm, the target is considered “moving” and is detached. Thereupon, in step 904, an unplaced targets query is made. If there are no unplaced targets, an unplaced target dialog screen is displayed (step 913) and the user is allowed to place targets via manual inputs. Thereafter, in step 906, a three point recommendation query is made. If the user elects to use the three point method, which involves establishing a base reference using the best three of four base reference measurements, a three point dialog is displayed in step 908, use of the three-point method may be selected if one of the 4-base reference points is adjacent a damaged region of the vehicle for example. Next, in step 910, a tree point reference request query is made. If the answer is NO, the target positions are displayed and the program proceeds to return 894. If the answer is YES, the previous base reference is invalidated (step 912), and the program proceeds to return 894.

As described previously, in step 890, the read scanner program is executed, FIG. 17. This involves an initial query in step 914 to determine whether the scanner has been calibrated. If the answer is NO, the program in step 916 requests stored scanner version and calibration data from the scanner and proceeds to step 918 where a response error query is made. If the answer at step 918 is NO, the program reverts to the YES leg of step 914. If the answer at step 918 is YES, the program proceeds to step 920 where the fined scanner dialog is displayed. Thereafter, a retry communication query is made in step 922. If the answer is YES, the program returns to initial step 914. If the answer is NO, a display error screen is generated in step 924.

Returning to step 914, if the answer to the scanner calibration query is YES, the next step 926 requests a scanner measurement involving a 360 sweep by the upper and lower laser pairs. The data received from this measurement is stored in buffer in step 928. This data is in the form of “event times” generated during scanning. In particular, the program considers each of the lasers as a “hub”, there being an upper left, lower left, upper right and lower right hub. Moreover, as explained previously, each sweep of each target generates eight on-off reflective events. Thus, the buffer collects a series of encoded events during a measurement sweep, each event encoded into 32 bits of information. This information defines the type of event, e.g., “on”, “off”, 0/360° edge reflection (synchronization pulse) or broad mirror panel reflection, or stray reflections. The information also represents the time the event occurred during the measurement sweep. That is, each event is “time-stamped” as it occurs. The time base is a free-running counter that counts down the 29 MHz clock. There are 25 bits in the counter, so the counter rolls over about once per second. This is adequate to uniquely timestamp every event that can occur during a scan.

Scanning is started when the apparatus 46 receives a scan command from computer 48. When this signal is received, a timestamp latch is armed to begin timestamping events for each hub, starting with the next occurring edge reflection for that hub. From this point on, whenever an event occurs, a precise system time is recorded as 25 bits in a 32-bit latch. The remaining seven bits are used as “tag” bits that identify the exact conditions causing the event. The latched information is immediately saved in a first-in-first-out buffer, and the process is continued until each of the four hubs has collected data. At this point, the buffer contains four complete scans, and should contain eight leading edge and eight trailing edge reflection events. Each of these synchronization pulses marks the start or end of a complete hub scan. As soon as scanning is complete, the entire buffer is downloaded back to the computer 48 as a binary stream of 8-bit bytes using an UART transmitter.

After this event data collection, in step 930, a response error query is made. If the answer is YES, the program reverts to step 920. If the answer is NO, an event sorting loop 932 is entered. In this loop, an all events processed query is made, step 934. If all of the events were stored in buffer, the program proceeds to the target decode program 936, FIG. 18. If all events are not processed, in step 938 the hub identifications are decoded together with event types and times, the latter being sorted to individual hubs in the buffer. After step 938, a query is made in step 940 as to whether the scanning information is correct. For example, if there is an invalid target or insufficient data has been gathered, the answer at step 940 would be NO, and the program would revert to step 926 for another measurement. If the answer at step 940 is YES, end loop 942 is entered.

The target decode program, FIG. 18, involves a hub decode loop 944 wherein hub motor speeds are calculated, step 946, as explained previously. In order to make this calculation, the zero and 360° synchronization times for each mirror are retrieved from the buffer. Once the motor speeds are calculated, the target decode loop is begun, step 948. The decode loop includes in step 950 the obtention of the next eight 4-byte event data packets for each target as the mirrors rotate. As explained above, each target has four reflective regions. As the laser radiation sweeps each target, there are a total of eight events, namely the times at which the radiation strikes the leading and trailing edges of each of the four reflective regions. After step 950, a valid target query is made in step 952. This involves determining whether the eight events defining the four reflective regions correspond to a valid target code. If the answer is NO, the program in step 953 discards the first two of the eight recorded events and loops back to step 950. This continues until a valid target answer of YES is obtained in step 952. When this occurs, the program moves to step 954 where the target identification is decoded and the sweep height on each target is calculated using the times between events as mentioned previously. This gives the Z axis coordinate for each target. Also, the first and last reflective events for each target are converted to angles using the synchronization times. These results are then stored and the program moves to the end target decode loop 956 and end hub decode loop 958.

In this sequence, in step 960 each of the four hubs is compared to match decoded targets, i.e., hub and target data are matched. Next, in step 962 a query is made as to whether consistent target information has been obtained, that is, whether the hubs and targets have been correctly matched. If the answer is NO, a return error step 964 follows. If the target information is consistent, the program proceeds to step 966 where each of the targets is triangulated relative to the mirrors 140 of apparatus 46. Specifically, four angles are known for each target: the angles between the leading edge of the first-swept vertical stripe (the first “on” event) and the two mirrors 140; and the angles between the trailing edge of the last-swept vertical stripe (the last “off” event) and the two mirrors 140. Therefore four triangulation calculations are made for each target, an upper pair of triangulations using the angles representative of the first “on” and last “off” events from the upper laser sweep and a lower pair of triangulations likewise using the angles representative of the first “on” or last “off” events from the lower laser sweep. Thus, in step 968, the lower level laser sweep data is employed to generate and store in memory two lower X, Y, Z coordinates for each target. Similarly, in step 970, the upper level laser sweep data is employed to generate and store in memory two upper X, Y, Z coordinates for each target. Next, in step 972, a determination is made as to whether the stored target coordinates are consistent, i.e., whether the upper and lower coordinates are within predetermined limits. If the answer is NO, the program proceeds to return error step 964. If the coordinates are within limits (dependent chiefly upon the vertical distance between laser pairs), the upper and lower coordinate pairs for each target are averaged, and these upper and lower coordinate averages are again averaged to yield a final X, Y, Z coordinate for each target. This final coordinate is stored in step 974. Also, the program generates a vector using the upper and lower coordinates for each target, these vectors being used to ascertain the target hang angles which are also stored. This being done, in step 976, the triangulation loop is terminated and a successful measurement is completed.

As explained previously, each scanning apparatus 46 is factory precalibrated. Generally speaking, this calibration is carried out using an optical bench having a plurality of targets 44 spaced around the bench at precisely known locations. An individual apparatus 46 is placed in the middle of the bench with a coupled computer 48, and is operated to scan the targets as described above. This generates a series of apparent target positions using the uncalibrated apparatus 46. These target locations will typically be in error to a greater or lesser extent, as compared with the known position of the targets, owing to slight manufacturing tolerance errors, e.g., in the position and spacing of the lasers 122, 126 and 124, 128, or in the orientation of the mirrors 140.

Next, the calibration program undertakes an iterative, non-linear fit to an empirical trigonometric equation, and generates coefficients for this equation which give the best fit. This equation is:

ReaLAngle=a+ALL+BLL×sin(1×a+DLL)+CLL×sin (2×a+ELL)+FLL×sin(3×a+GLL)+HLL×sin(4×a+ILL)

where ALL, DLL, ELL, GLL and ILL are angle corrections as lead/lag offsets for each of the fundamental, first harmonic, second harmonic, third harmonic and fourth harmonics (as denoted by the multipliers 1, 2, 3 and 4), and BLL, CLL, FLL and HLL are the respective magnitude multipliers for each harmonic. The above equation applies these coefficients so as to correct the observed angles a to correct angles.

As a part of this procedure, the program completes a conventional mean squared error (MSE) calculation in order to produce coefficients for the trigonometric equation giving the lowest possible MSE. Once these coefficients have been determined, they are saved in an INI formatted file in the scanner's non-volatile memory, and can be retrieved for use when the apparatus 46 is used in the field, as described above.

Additionally, the calibration program employs another equation to correct for pitch angle of the laser beams as they vary during a full 360° scan. This equation makes a minor correction to the observed target height; this height correction gets larger as targets further from the scanner are scanned, because the beams are pitched up/down owing to, e.g., a tilted mirror. The pitch angle calibration used is:

Pitch angle=AP+BP×sin(a+DP)

where AP is the average pitch angle (laser beams drawing cones), DP is the phase, BP is the magnitude of a tilted plane and a is the rotational angle to the target. Accordingly, the true height of each target is expressed by the equation:

True height=H+R*sin(Pitch angle)

where H is the observed height for the target and R is the range (distance from hub) to the target. The coefficients generated by this calculation are also stored in memory.

The calibration program is reproduced in its entirety in the attached source code appendix.

CDROM Table in ASCII Format 11/30/00 01:04p <DIR> 11/30/00 01:04p <DIR> 04/25/00 11:57p 33 ------------C---------- 04/25/00 11:57p 33 ------------H---------- 04/25/00 11:57p 33 -----------UIR--------- 04/25/00 11:57p 33 1.BEN 04/25/00 10:48p 342 18.BEN 11/21/00 08:35a 588 403.bin 11/28/00 01:21p 156,130 ADDRCMP.SCH.DXF 09/20/00 11:07a 10,820 ALIGN.C 03/19/00 10:15a 3,562 AUDIT.C 11/28/00 01:22p 93,871 BAUD192.SCH.DXF 09/27/00 11:19a 9,862 BENCH.C 11/28/00 03:20p 321,078 BenchCal.bmp 03/24/00 06:02p 1,492 BIGHUB.C 11/28/00 01:22p 164,601 BUFFER3.SCH.DXF 04/30/00 01:39a 2,448 CAL.CSV 03/19/00 06:16p 12,105 CALCTGTS.C 10/03/00 09:05p 14,066 CALVIEW.C 11/28/00 01:23p 150,508 CAPTURE.SCH.DXF 11/28/00 01:23p 150,508 CAPTURE1.SCH.DXF 05/09/00 08:45a 1,334 CCW.BMP 09/26/00 11:26a 6,065 CHIEFEYE.C 11/21/00 09:00a 192 ChiefEye.cfg 11/21/00 09:00a 367,104 CHIEFEYE.EXE 11/21/00 08:44a 12,602 CHIEFEYE.H 11/21/00 09:11a 25,538 CHIEFEYE.PRJ 08/03/00 09:42a 192 CHIEFEYE1.CFG 11/28/00 01:21p 240,661 CHIEF.SCH.DXF 11/28/00 01:23p 210,853 CNTREAD.SCH.DXF 11/28/00 01:23p 74,013 CNTR.SCH.DXF 11/28/00 01:24p 227,681 CNTWRT.SCH.DXF 11/14/00 04:05p 3,229 COMM.C 11/21/00 09:12a 8,478 CONFIG.h 11/21/00 09:12a 32,166 CONFIG.UIR 05/09/00 08:45a 1,334 CW.BMP 11/14/00 03:59p 11,605 DATABASE.C 11/27/00 01:25p 2,877 dataLog.cpp 11/27/00 01:25p 2,290 dataLog.h 10/16/00 09:31p 1,821 DataLogForm.dfm 11/27/00 01:25p 3,885 DataLogForm.h 10/27/99 05:56p 989 DEBUG.C 11/28/00 01:24p 14,750 DEBUG.SCH.DXF 10/09/00 01:44p 594 DEFAULT.BEN 11/14/00 10:06a 492 detector.bin 11/27/00 01:25p 1,099 dlldefs.h 11/28/00 01:24p 181,289 ENCODER.SCH.DXF 05/10/00 09:31a 42 ENCRYPT.C 11/27/00 01:25p 3,606 errors.h 11/23/99 12:06a 1,078 EYE.ICO 11/18/00 04:14p 4,526 FCNPROTO.H 11/28/00 01:24p 23,146 FIFO_RD.SCH.DXF 11/28/00 01:24p 296,349 FIFO_WR.SCH.DXF 10/16/00 09:31p 815 File1.txt 08/17/99 07:21a 958 FILEUTLS.C 08/17/99 07:09a 152 FILEUTLS.H 11/28/00 01:25p 45,061 FILTER1.SCH.DXF 11/28/00 01:25p 45,061 FILTER2.SCH.DXF 11/28/00 01:26p 45,061 FILTER3.SCH.DXF 11/28/00 01:26p 45,061 FILTER4.SCH.DXF 11/27/00 01:25p 4,376 FindPortForm.cpp 10/16/00 09:31p 3,787 FindPortForm.dfm 11/27/00 01:25p 1,876 FindPortForm.h 08/30/99 04:30p 9,493 FINDTGTS.C 08/03/00 10:46a 227,840 front&back_v3c WS_start.xls 08/10/00 09:22a 69 frontkey.h 08/10/00 09:22a 200,704 frontmip.dll 10/12/99 09:27p 16,534 frontmip.h 08/10/00 09:22a 40,398 frontmip.lib 04/13/97 03:24p 1,891 HEX.H 09/20/00 11:11a 21,781 HGTVIEW.C 08/03/00 10:03a 21,002 HGTVIEW_SOLVER.C 11/28/00 03:19p 321,078 HistogramView.bmp 01/04/00 08:29p 6,911 HISTVIEW.C 11/27/00 01:25p 32,204 Hub.cpp 11/27/00 01:25p 13,714 Hub.h 08/02/00 10:44a 3,362 HubGraph.h 08/03/00 03:30p 11,256 HubGraph.uir 10/16/00 09:31p 3,915 hubinsert.txt 08/01/00 01:28p 9,141 hubsupport.c 11/28/00 03:21p 321,078 HubTest.bmp 08/02/00 10:44a 14,190 Hubtest.c 11/28/00 03:18p 321,078 HubView.bmp 11/30/00 01:04p <DIR> images 11/28/00 01:27p 299,199 INPUT.SCH.DXF 05/04/00 05:10p 1,001 JUNK.C 06/23/00 01:24p 2,044 junk.ini 10/03/00 06:55p 2,044 k.ini 11/28/00 03:19p 321,078 LargeView.bmp 11/28/00 01:27p 104,481 LATCH3.SCH.DXF 10/03/00 09:42p 2,044 legacy.ini 11/27/00 01:25p 6,161 Livetarg.cpp 11/27/00 01:25p 4,637 Livetarg.h 11/27/00 01:25p 6,196 LiveTargets.cpp 11/27/00 01:25p 3,664 LiveTargets.h 09/20/00 08:50a 11,769 LZRVIEW.C 10/09/00 01:52p 29,574 MAIN.C 11/20/00 04:16p 34,361 MAIN.h 11/20/00 04:31p 235,173 MAIN.UIR 04/25/00 09:53p 27,191 MAIN_B˜1.H 11/27/00 01:25p 2,658 moreowl.h 11/28/00 01:27p 162,394 MOTORS.SCH.DXF 11/21/00 08:44a 13,997 NewType8.c 11/28/00 03:19p 321,078 ParamView.bmp 11/27/00 01:25p 9,655 Parkfile.cpp 11/27/00 01:25p 6,222 Parkfile.h 11/30/00 01:04p <DIR> Program Files 11/27/00 01:25p 784 Progress.cpp 10/16/00 09:31p 447 Progress.dfm 11/27/00 01:25p 1,069 Progress.h 11/18/00 03:34p 2,627 RADIO.C 10/11/99 07:14p 348 RADIO.H 11/27/00 01:25p 1,994 RawSoure.h 11/28/00 01:28p 68,371 RCVDELAY.SCH.DXF 10/03/00 06:52p 2,049 read1.ini 11/27/00 01:25p 2,840 ReadThread.cpp 11/27/00 01:25p 1,033 ReadThread.h 11/28/00 01:28p 327,180 RECV.SCH.DXF 12/01/99 07:23p 4,096 REPORTS.C 08/29/99 01:43p 451 REPORTS.H 05/08/00 01:16p 2,448 ROBIN.CSV 05/09/00 04:54p 2,044 ROBIN1.INI 05/09/00 04:56p 2,044 ROBIN2.INI 05/09/00 04:57p 2,044 ROBIN3.INI 10/03/00 07:00p 2,044 robin4.ini 11/27/00 01:25p 1,876 RodLength.cpp 11/27/00 01:25p 1,019 RodLength.h 11/27/00 01:25p 1,178 RodLength1.cpp 11/27/00 01:25p 940 RodLength1.h 11/27/00 01:09p 4,752 ScanDriver.bpr 11/27/00 01:25p 3,586 ScanDriver.cpp 11/27/00 01:25p 13,108 ScanErrs.cpp 11/27/00 01:25p 2,089 ScanErrs.h 11/27/00 01:25p 68,950 scanner.cpp 11/27/00 01:25p 14,045 scanner.h 11/27/00 12:40p 5,880 Scanner.rh 11/27/00 01:25p 31,767 ScannerCfg.cpp 11/21/00 04:38p 9,512 ScannerForm.dfm 11/27/00 01:25p 8,024 ScannerCfg.h 11/27/00 01:25p 36,135 ScannerForm.cpp 11/27/00 12:40p 1,415 ScannerView.dfm 11/27/00 01:25p 6,689 ScannerForm.h 11/27/00 01:25p 46,947 ScannerView.cpp 11/27/00 12:40p 1,415 ScannerView2.dfm 11/27/00 01:25p 2,207 ScannerImports.h 11/27/00 01:25p 46,947 ScannerView2.cpp 11/27/00 01:25p 6,975 ScannerView.h 11/27/00 01:25p 6,975 ScannerView2.h 11/27/00 01:25p 7,407 ScanSetup.cpp 10/16/00 09:31p 6,245 ScanSetup.dfm 11/27/00 01:25p 1,829 ScanSetup.h 10/16/00 09:31p 5,243 ScanStart.cpp 10/16/00 09:31p 4,443 ScanStart.dfm 11/27/00 01:25p 2,237 ScanStart.h 11/27/00 01:25p 390 ScanStatus.h 11/27/00 01:25p 1,569 ScanThread.cpp 11/27/00 01:25p 888 ScanThread.h 10/16/00 09:31p 46,266 ScanView.cpp 10/16/00 09:31p 15,919 ScanView.dfm 11/27/00 01:25p 7,077 ScanView.h 10/16/00 09:31p 51,432 ScanView2.cpp 05/09/00 08:29a 1,334 SCREW.BMP 11/27/00 01:25p 11,149 Serial.cpp 11/27/00 01:25p 3,967 Serial.h 10/25/99 10:35a 1,954 SETUP.C 08/10/00 01:33p 22,376 SOLVER.C 09/27/00 11:16a 2,307 SOLVER.H 05/31/00 02:47p 4,433 SOLVER.PRJ 09/27/00 10:35p 27,107 SOLVERCVI.C 09/27/00 11:16a 2,978 SOLVERCVI.H 08/03/00 10:02a 9,748 SOLVERTEST.C 05/02/00 10:03a 178 SOLVERVCC.H 08/02/00 01:47p 9,019 SOLVERTEST_CONST.C 06/01/00 10:41a 13,821 SOLVERTEST_CVI.C 08/01/00 10:49a 3,492 Stkmask.c 11/20/00 07:15 21,166 STKVIEW.C 11/28/00 03:16p 321,078 StrikeView.bmp 11/27/00 01:25p 5,228 TAGMESSG.H 11/27/00 01:25p 9,758 target.cpp 11/27/00 01:25p 3,717 target.h 11/20/00 04:04p 26,542 TARGETS.C 08/30/99 12:51p 994 TARGETS.K 08/30/99 12:51p 1,590 TARGETS.UIR 11/28/00 03:17p 321,078 TargetView.bmp 01/19/98 12:53a 1,078 TESTER.ICO 11/20/00 06:46p 6,681 TGTTYPE0.C 11/20/00 06:45p 14,661 TGTTYPE8.C 11/18/00 10:29p 8,037 TGTVIEW.C 01/07/00 01:09p 3,594 TGTTYPE1.c 01/13/98 05:16p 922 TYPES.H 11/30/00 01:04p <DIR> vers404 11/21/00 09:07a 3,925 VERSION.H 05/03/00 11:22a 607 WS.BEN 11/30/00 01:04p <DIR> XiLinxDXF 11/28/00 01:28p 193,922 XMIT.SCH.DXF 195 File(s) 8,206,191 bytes

CDROM Table in Executable Format 11/29/00 02:25p <DIR> 11/29/00 02:25p <DIR> 04/25/00 11:57p 33 ------------H---------- 04/25/00 11:57p 33 ----------UIR---------- 04/30/00 01:39a 2,448 CAL.CSV 03/19/00 06:16p 12,105 CALCTGTS.C 10/03/00 09:05p 14,066 CALVIEW.C 11/28/00 01:23p 150,508 CAPTURE.SCH.DXF 11/28/00 01:23p 150,508 CAPTURE1.SCH.DXF 05/09/00 08:45a 1,334 CCW.BMP 09/26/00 11:26a 6,065 CHIEFEYE.C 11/21/00 09:00a 192 ChiefEye.cfg 11/21/00 09:00a 367,104 CHIEFEYE.EXE 11/21/00 08:44a 12,602 CHIEFEYE.H 11/21/00 09:11a 25,538 CHIEFEYE.PRJ 08/03/00 09:42a 192 CHIEFEYE1.CFG 11/28/00 01:21p 240,661 CHIEF.SCH.DXF 11/28/00 01:23p 210,853 CNTREAD.SCH.DXF 11/28/00 01:23p 74,013 CNTR.SCH.DXF 11/28/00 01:24p 227,681 CNTWRT.SCH.DXF 11/14/00 04:05p 3,229 COMM.C 11/21/00 09:12a 8,478 CONFIG.h 11/21/00 09:12a 32,166 CONFIG.UIR 05/09/00 08:45a 1,334 CW.BMP 11/14/00 03:59p 11,605 DATABASE.C 10/27/99 05:56p 989 DEBUG.C 11/28/00 01:24p 14,750 DEBUG.SCH.DXF 10/09/00 01:44p 594 DEFAULT.BEN 11/14/00 10:06a 492 detector.bin 11/28/00 01:24p 181,289 ENCODER.SCH.DXF 05/10/00 09:31a 42 ENCRYPT.C 11/23/99 12:06a 1,078 EYE.ICO 11/18/00 04:14p 4,526 FCNPROTO.H 11/28/00 01:24p 23,146 FIFO_RD.SCH.DXF 11/28/00 01:24p 296,349 FIFO_WR.SCH.DXF 08/17/99 07:21a 958 FILEUTLS.C 08/17/99 07:09a 152 FILEUTLS.H 11/28/00 01:25p 45,061 FILTER1.SCH.DXF 11/28/00 01:25p 45,061 FILTER2.SCR.DXF 11/28/00 01:26p 45,061 FILTER3.SCH.DXF 11/28/00 01:26p 45,061 FILTER4.SCH.DXF 08/30/99 04:30p 9,493 FINDTGTS.C 08/03/00 10:46a 227,840 front&back_v3c WS_start.xls 08/10/00 09:22a 69 frontkey.h 08/10/00 09:22a 200,704 frontmip.dll 10/12/99 09:27p 16,534 frontmip.h 08/10/00 09:22a 40,398 frontmip.lib 04/13/97 03:24p 1,891 HEX.H 09/20/00 11:11a 21,781 HGTVIEW.C 08/03/00 10:03a 21,002 HGTVIEW_SOLVER.C 11/28/00 03:19p 321,078 HistogramView.bmp 01/04/00 08:29p 6,911 HISTVIEW.C 08/02/00 10:44a 3,362 HubGraph.h 08/03/00 03:30p 11,256 HubGraph.uir 08/01/00 01:28p 9,141 hubsupport.c 11/28/00 03:21p 321,078 HubTest.bmp 08/02/00 10:44a 14,190 Hubtest.c 11/28/00 03:18p 321,078 HubView.bmp 11/28/00 01:27p 299,199 INPUT.SCH.DXF 05/04/00 05:10p 1,001 JUNK.C 06/23/00 01:24p 2,044 junk.ini 10/03/00 06:55p 2,044 k.ini 11/28/00 03:19p 321,078 LargeView.bmp 11/28/00 01:27p 104,481 LATCH3.SCH.DXF 10/03/00 09:42p 2,044 legacy.ini 09/20/00 08:50a 11,769 LZRVIEW.C 10/09/00 01:52p 29,574 MAIN.C 11/20/00 04:16p 34,361 MAIN.h 11/20/00 04:31p 235,173 MAIN.UIR 04/25/00 09:53p 27,191 MAIN_B-1.H 11/28/00 01:27p 162,394 MOTORS.SCH.DXF 11/21/00 08:44a 13,997 NewType8.c 11/28/00 03:19p 321,078 ParamView.bmp 11/18/00 03:34p 2,627 RADIO.C 10/11/99 07:14p 348 RADIO.H 11/28/00 01:28p 68,371 RCVDELAY.SCH.DXF 10/03/00 06:52p 2,049 read1.ini 11/28/00 01:28p 327,180 RECV.SCH.DXF 12/01/99 07:23p 4,096 REPORTS.C 08/29/99 01:43p 451 REPORTS.H 05/08/00 01:16p 2,448 ROBIN.CSV 05/09/00 04:54p 2,044 ROBIN1.INI 05/09/00 04:56p 2,044 ROBIN2.INI 05/09/00 04:57p 2,044 ROBIN3.INI 10/03/00 07:00p 2,044 robin4.ini 05/09/00 08:29a 1,334 SCREW.BMP 10/25/99 10:35a 1,954 SETUP.C 08/10/00 01:33p 22,376 SOLVER.C 09/27/00 11:16a 2,307 SOLVER.H 05/31/00 02:47p 4,433 SOLVER.PRJ 09/27/00 10:35p 27,107 SOLVERCVI.C 09/27/00 11:15a 2,978 SOLVERCVI.H 08/03/00 10:02a 9,748 SOLVERTEST.C 05/02/00 10:03a 178 SOLVERVCC.H 08/02/00 01:47p 9,019 SOLVERTEST_CONST.C 06/01/00 10:41a 13,821 SOLVERTEST_CVI.C 08/01/00 10:49a 3,492 Stkmask.c 11/20/00 07:15p 21,166 STKVIEW.C 11/28/00 03:16p 321,078 StrikeView.bmp 11/20/00 04:04p 26,542 TARGETS.C 08/30/99 12:51p 994 TARGETS.H 08/30/99 12:51p 1,590 TARGETS.UIR 11/28/00 03:17p 321,078 TargetView.bmp 01/19/98 12:53a 1,078 TESTER.ICO 11/20/00 06:46p 6,681 TGTTYPE0.C 11/20/00 06:45p 14,661 TGTTYPE8.C 11/18/00 10:29p 8,037 TGTVIEW.C 01/07/00 01:09p 3,594 TGTTYPE1.C 01/13/98 05:16p 922 TYPES.H 11/21/00 09:07a 3,925 VERSION.H 05/03/00 11:22a 607 WS.BEN 11/28/00 01:28p 193,922 XMIT.SCH.DXF 112 File(s) 6,812,959 bytes 0 bytes free 

We claim:
 1. In a laser scanning system for determining frame or unibody alignment of a vehicle including at least one reflective laser beam target adapted for placement in a known relationship relative to a selected vehicle laser beam target adapted for placement in a known relationship relative to a selected vehicle reference point, and laser scanning apparatus comprising a laser assembly operable to direct laser beams toward said target, and a detector for receiving reflected laser beams from said target, wherein the laser assembly is operable to direct a pair of individual laser beams spaced vertically from each other by a known distance toward said target, said laser assembly being stationary there being a pair of rotating mirrors respectively located on opposite sides of the laser assembly, each of said rotating members comprising an upright mirror having a relatively wide reflective surface and a relatively narrow reflective edge.
 2. The system of claim 1, said laser assembly including a pair of laser units, each laser unit comprising a pair of vertically spaced apart laser-generating devices.
 3. The system of claim 1, said laser assembly and said rotating mirrors located within a housing presenting transparent wall surfaces for passage of said laser beams therethrough.
 4. The system of claim 1, said detector located adjacent said laser assembly.
 5. The system of claim 1, said laser assembly operable to direct each of said vertically spaced apart laser beams through a 360° sweep.
 6. The system of claim 1, including a pair of upper lasers operable to generate one of said laser beams, and a pair of lower lasers operable to generate the other of said laser beams, said upper and lower laser pairs being spaced apart by a known distance.
 7. The system of claim 1, including a microprocessor operably coupled with said scanning apparatus to calculate individual, upper and lower, three-dimensional spatial coordinates of said target using each of said vertically spaced apart beams respectively.
 8. The system of claim 7, said target presenting first and second spaced-apart reflective stripes, said scanning apparatus and microprocessor generating four individual three-dimensional coordinates, namely a pair of upper coordinates corresponding to said first and second stripes, and a pair of lower coordinates corresponding to said first and second stripes.
 9. The system of claim 8, said scanner and microprocessor operable to average said upper coordinate pair to give an averaged upper coordinate, and to average said lower coordinate pair to give an averaged lower coordinate.
 10. The system of claim 9, said scanned microprocessor operable to average said averaged upper coordinate pair and said averaged lower coordinate pair to yield a coordinate for said target.
 11. The system of claim 1, including a plurality of reflective laser beam targets each adapted for placement on said vehicle at predetermined reference points.
 12. The system of claim 11, said targets being individually coded.
 13. In a method of laser scanning for determining frame or unibody alignment of a vehicle including the steps of placing at least one reflective laser beam target in a known relationship relative to a selected vehicle reference point, laser scanning said target by directing laser beams from a source toward said target, and detecting reflected laser beams from said target, the improvement which comprises directing a pair of individual laser beams spaced vertically from each other by a known distance toward said target, and detecting the respective reflections therefrom, said source being stationary, said method further including the step of providing a pair of rotating mirrors respectively located on opposite sides of said source wherein each of said rotating mirrors comprises an upright mirror having a relatively wide reflective surface and a relatively narrow reflective edge.
 14. The method of claim 13, including the step of providing as said source a laser assembly including a pair of laser units, each laser unit comprising a pair of vertically spaced apart laser-generating devices.
 15. The method of claim 13, including the step of housing said source and mirrors within a housing presenting transparent wall surfaces for passage of said laser beams therethrough.
 16. The method of claim 13, including providing a laser beam assembly for performing said directing step and a detector for performing said detecting step, and further including the step of locating said detector adjacent said laser assembly.
 17. The method of claim 13, including the step of causing said source to direct each of said vertically spaced apart laser beams through a 360° sweep.
 18. The method of claim 13, said source including a pair of upper lasers operable to generate one of said laser beams, and a pair of lower lasers operable to generate the other of said laser beams, said upper and lower laser pairs being spaced apart by a known distance.
 19. The method of claim 13, including the step of calculating individual, upper and lower, three-dimension spatial coordinates of said target using each of said vertically spaced apart beams respectively.
 20. The method of claim 19, said target presenting first and second spaced-apart reflective stripes, and including the step of calculating four individual three-dimensional coordinates, namely a pair of upper coordinates corresponding to said first and second stripes, and a pair of lower coordinates corresponding to said first and second stripes.
 21. The method of claim 20, including the step of averaging said upper coordinate pair to give an averaged upper coordinate, and averaging said lower coordinate pair to give an averaged lower coordinate.
 22. The method of claim 21, including the step of averaging said averaged upper coordinate pair and said averaged lower coordinate pair to yield a coordinate for said target.
 23. The method of claim 13, including the step of placing a plurality of reflective laser beam targets on said vehicle at predetermined reference points.
 24. The method of claim 23, said targets being individually coded.
 25. A laser scanning apparatus for determining frame or unibody alignment of a vehicle comprising: an enclosed housing presenting a pair of elongated, opposed laser-transparent panels; a laser scanning assembly located within said housing; a pair of upright, rotatable mirrors within said housing and on opposite sides of said laser assembly, each of said mirrors having a relatively wide reflective surface and a relatively narrow reflective edge, said laser assembly and mirrors operable to direct laser beams through said panels and toward a vehicle-mounted target; and a detector for receiving reflected laser beams from said target, said detector located within the housing.
 26. The apparatus of claim 25, said laser assembly including upper and lower, vertically spaced apart laser sources operable to direct respective, vertically spaced apart laser beams through said panels and towards said vehicle-mounted target. 